package com.quanyan.user.mapper;

import com.lefu.commons.utils.Page;
import com.quanyan.user.model.vo.response.NewsUserMan;
import com.quanyan.user.model.vo.response.RespDynamicDetail;
import com.quanyan.user.model.vo.response.TbTopicHost;
import com.quanyan.user.response.ReqImage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by Z on 2016/11/14.
 * 动态
 */
public interface NewsDetailMapper {


    /**
     * 运动圈
     * @param page
     * @return
     */
    List<RespDynamicDetail>  findAllloadNewsAll(@Param("page") Page page);

    /**
     * 关注动态
     *
     * @param page
     * @param uid
     * @return
     */
    List<RespDynamicDetail> findAllLoadNewsMyAttention(@Param("page") Page page, @Param("uid") Integer uid);

    /**
     * 粉丝动态
     *
     * @param page
     * @param uid
     * @return
     */
    List<RespDynamicDetail> findAllLoadNewsMyFans(@Param("page") Page page, @Param("uid") Integer uid);


    /**
     * 话题动态
     *
     * @param page
     * @param uid
     * @return
     */
    List<RespDynamicDetail> findAllLoadNewsTopicDy(@Param("page") Page page, @Param("topicId") Integer uid);


    /**
     * 获取我发布的动态
     *
     * @param page
     * @param uid
     * @return
     */
    List<RespDynamicDetail> findAllLoadNewsMyDy(@Param("page") Page page, @Param("uid") Integer uid);


    /**
     * 获取她的动态
     *
     * @param page
     * @param uid
     * @return
     */
    List<RespDynamicDetail> findAllLoadNewsTaDy(@Param("page") Page page, @Param("uid") Integer uid);

    /**
     * 批量插入动态图片
     *
     * @param reqImages
     * @param newsId
     * @param uid
     * @return
     */
    void batchInsertDynamicImageObjs(@Param("reqImages") List<ReqImage> reqImages, @Param("newsId") Integer newsId, @Param("uid") Integer uid);

    /**
     *
     * @param images
     * @param newsId
     * @param uid
     */
    void batchInsertDynamicImages(@Param("images") List<String> images, @Param("newsId") Integer newsId, @Param("uid") Integer uid);

    /**
     * 更新动态话题回复人数
     * @param topicId  动态话题Id
     * @param isAdd    1:加1   0：减1
     * @return
     */
    int updateNewsTopicReplyTotal(@Param("topicId") Integer topicId, @Param("isAdd") byte isAdd);

    /**
     * 更新动态话题参入人数
     * @param topicId
     * @param isAdd    1:加1   0：减1
     * @return
     */
    int updateNewsTopicPepAndReplyTotal(@Param("topicId") Integer topicId, @Param("isAdd") byte isAdd);

    /**
     * 删除动态
     * @param newsId
     * @return
     */
    int deleteNewsDetails(Integer newsId);

    /**
     * 删除动态图片
     * @param newsId
     * @return
     */
    int deleteNewsImages(Integer newsId);


    /**
     * 动态详情
     * @param newsId
     * @return
     */
    RespDynamicDetail dynamicDetail(@Param("newsId") Integer newsId);


    /**
     *
     * @param iNum
     * @return
     */
    List<NewsUserMan> getFirstPageMans(@Param("iNum") Integer iNum);

    /**
     * 获取我发布的动态数量
     * @param uid
     * @return
     */
    Integer myDynamicCount(Integer uid);

    /**
     * 精选动态
     * @param lstInteresting 用户标签 可为空
     * @return
     */
    List<RespDynamicDetail> findAllChoiceDynamic(@Param("page")Page page ,@Param("list")List<Integer> lstInteresting);


    void updateReadCnt(@Param("dynamicId") Integer dynamicId);


    /**
     * 统计话题热度
     * @param lstTopicId
     * @return
     */
    List<TbTopicHost> queryTopicsHot(@Param("list") List<Integer> lstTopicId);


    /**
     * 获取俱乐部发布动态
     *
     * @param page
     * @return
     */
    List<RespDynamicDetail> findAllLoadNewsClubDy(@Param("page") Page page, @Param("clubId") Integer clubId);

    /**
     * 获取视频列表
     * @param moduleType 1:达人频道页 2：发现页 3：赛事频道 4：俱乐部频道页 5：场馆频道页
     * @return
     */
    List<RespDynamicDetail> findAllDiscoveryVideoDy(@Param("page") Page page, @Param("moduleType") Byte moduleType);

    /**
     * 获取用户动态总数
     * @param currentUid
     * @param uid
     * @return
     */
    int getUserNewsCount(@Param("currentUid") Integer currentUid, @Param("uid") Integer uid);


    /**
     * 获取首页精选视屏
     * @param moduleType 1:达人频道页 2：发现页 3：赛事频道 4：俱乐部频道页 5：场馆频道页
     * @return
     */
    List<RespDynamicDetail>  findAllSpecialVideoDy(@Param("page") Page page);


    /**
     *关注达人动态
     * @param page
     * @param uid
     * @return
     */
    List<RespDynamicDetail> findAllLoadNewsMyDaren(@Param("page") Page page, @Param("uid") Integer uid);


}
